home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / Universal Interfaces / DeskBus.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-30  |  7.2 KB  |  242 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        DeskBus.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __DESKBUS__
  13. #define __DESKBUS__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. /*    #include <ConditionalMacros.h>                                */
  18. /*    #include <MixedMode.h>                                        */
  19. /*        #include <Traps.h>                                        */
  20. #endif
  21.  
  22. typedef char ADBAddress;
  23.  
  24.  
  25. /*
  26.     ADBCompletionProcs, ADBDeviceDriverProcs, ADBServiceRoutineProcs, and 
  27.     ADBInitProcs cannot be written in or called from a high-level language 
  28.     without the help of mixed mode or assembly glue because they use the 
  29.     following parameter-passing convention:
  30.  
  31.     NOTE:  IM V-371 says that A1 points to the completion routine.  There is
  32.     no good reason for passing to the routine a pointer to itself.  We have
  33.     therefore done away with this parameter.  
  34.  
  35.     typedef pascal void (*ADBCompletionProcPtr)(Ptr dataBuffPtr, 
  36.             Ptr opDataAreaPtr, long command);
  37.  
  38.         In:
  39.             =>     dataBuffPtr                A0.L
  40.             =>     opDataAreaPtr            A2.L
  41.             =>     command                    D0.L
  42.         Out:
  43.             none
  44.             
  45.     typedef pascal void (*ADBDeviceDriverProcPtr)(char devAddress, char devType);
  46.  
  47.         In:
  48.             =>     devAddress                D0.B
  49.             =>     devType                    D1.B
  50.         Out:
  51.             none
  52.     
  53.     typedef pascal void (*ADBServiceRoutineProcPtr)(Ptr dataBuffPtr, 
  54.             ADBCompletionUPP completionProc, Ptr dataPtr, long command);
  55.  
  56.         In:
  57.             =>     dataBuffPtr                A0.L
  58.             =>  completionProc            A1.L
  59.             =>    dataPtr                    A2.L
  60.             =>     command                    D0.L
  61.         Out:
  62.             none
  63.     
  64.     NOTE:  ADBInitProcs are called at the beginning and end of the ADBReInit call.
  65.     Inside Mac V-367 says to install this type of routine by jamming it into
  66.     the low-mem global JADBProc. The current recommended way to install a
  67.     VADBProc is to use a SetOSTrapAddress on the trap _VADBProc. The parameter
  68.     callOrder will be 0 for preprocessing, 1 for postprocessing.
  69.     
  70.     typedef pascal void (*ADBInitProcPtr)(char callOrder);
  71.  
  72.         In:
  73.             =>     callOrder                D0.B
  74.         Out:
  75.             none
  76.  
  77. */
  78.  
  79. enum  {
  80.     uppADBCompletionProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterA2,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(3,kRegisterD0,kFourByteCode),
  81.     uppADBDeviceDriverProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterD0,kOneByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterD1,kOneByteCode),
  82.     uppADBServiceRoutineProcInfo = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterA1,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(3,kRegisterA2,kFourByteCode)|REGISTER_ROUTINE_PARAMETER(4,kRegisterD0,kFourByteCode),
  83.     uppADBInitProcInfo            = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterD0,kOneByteCode)
  84. };
  85.  
  86. #if USESROUTINEDESCRIPTORS
  87. typedef pascal void (*ADBCompletionProcPtr)(Ptr dataBuffPtr, Ptr opDataAreaPtr, long command);
  88.  
  89. typedef UniversalProcPtr ADBCompletionUPP;
  90.  
  91. #define CallADBCompletionProc(userRoutine, dataBuffPtr, opDataAreaPtr, command)  \
  92.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBCompletionProcInfo,  \
  93.     (dataBuffPtr), (opDataAreaPtr), (command))
  94.  
  95. #define NewADBCompletionProc(userRoutine)  \
  96.     (ADBCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  97.     uppADBCompletionProcInfo, GetCurrentISA())
  98.  
  99. typedef pascal void (*ADBDeviceDriverProcPtr)(char devAddress, char devType);
  100.  
  101. typedef UniversalProcPtr ADBDeviceDriverUPP;
  102.  
  103. #define CallADBDeviceDriverProc(userRoutine, devAddress, devType)  \
  104.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBDeviceDriverProcInfo,  \
  105.     (devAddress), (devType))
  106.  
  107. #define NewADBDeviceDriverProc(userRoutine)  \
  108.     (ADBDeviceDriverUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  109.     uppADBDeviceDriverProcInfo, GetCurrentISA())
  110.  
  111. typedef pascal void (*ADBServiceRoutineProcPtr)(Ptr dataBuffPtr, ADBCompletionUPP completionProc, Ptr dataPtr, long command);
  112.  
  113. typedef UniversalProcPtr ADBServiceRoutineUPP;
  114.  
  115. #define CallADBServiceRoutineProc(userRoutine, dataBuffPtr, completionProc, dataPtr, command)  \
  116.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBServiceRoutineProcInfo,  \
  117.     (dataBuffPtr), (completionProc), (dataPtr), (command))
  118.  
  119. #define NewADBServiceRoutineProc(userRoutine)  \
  120.     (ADBServiceRoutineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  121.     uppADBServiceRoutineProcInfo, GetCurrentISA())
  122.  
  123. typedef pascal void (*ADBInitProcPtr)(char callOrder);
  124.  
  125. typedef UniversalProcPtr ADBInitUPP;
  126.  
  127. #define CallADBInitProc(userRoutine, callOrder)  \
  128.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppADBInitProcInfo, (callOrder))
  129.  
  130. #define NewADBInitProc(userRoutine)  \
  131.     (ADBInitUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppADBInitProcInfo,  \
  132.     GetCurrentISA())
  133.  
  134. #else
  135. typedef ProcPtr ADBCompletionUPP;
  136.  
  137. #define NewADBCompletionProc(userRoutine)  \
  138.     (ADBCompletionUPP)((userRoutine))
  139.  
  140. typedef ProcPtr ADBDeviceDriverUPP;
  141.  
  142. #define NewADBDeviceDriverProc(userRoutine)  \
  143.     (ADBDeviceDriverUPP)((userRoutine))
  144.  
  145. typedef ProcPtr ADBServiceRoutineUPP;
  146.  
  147. #define NewADBServiceRoutineProc(userRoutine)  \
  148.     (ADBServiceRoutineUPP)((userRoutine))
  149.  
  150. typedef ProcPtr ADBInitUPP;
  151.  
  152. #define NewADBInitProc(userRoutine)  \
  153.     (ADBInitUPP)(userRoutine)
  154.  
  155. #endif
  156.  
  157. #if defined(powerc) || defined (__powerc)
  158. #pragma options align=mac68k
  159. #endif
  160. struct ADBOpBlock {
  161.     Ptr                            dataBuffPtr;                    /*address of data buffer*/
  162.     ADBServiceRoutineUPP        opServiceRtPtr;                    /*service routine pointer*/
  163.     Ptr                            opDataAreaPtr;                    /*optional data area address*/
  164. };
  165. #if defined(powerc) || defined(__powerc)
  166. #pragma options align=reset
  167. #endif
  168.  
  169. typedef struct ADBOpBlock ADBOpBlock;
  170.  
  171. typedef ADBOpBlock *ADBOpBPtr;
  172.  
  173. #if defined(powerc) || defined (__powerc)
  174. #pragma options align=mac68k
  175. #endif
  176. struct ADBDataBlock {
  177.     char                        devType;                        /*device type*/
  178.     char                        origADBAddr;                    /*original ADB Address*/
  179.     ADBServiceRoutineUPP        dbServiceRtPtr;                    /*service routine pointer*/
  180.     Ptr                            dbDataAreaAddr;                    /*data area address*/
  181. };
  182. #if defined(powerc) || defined(__powerc)
  183. #pragma options align=reset
  184. #endif
  185.  
  186. typedef struct ADBDataBlock ADBDataBlock;
  187.  
  188. typedef ADBDataBlock *ADBDBlkPtr;
  189.  
  190. #if defined(powerc) || defined (__powerc)
  191. #pragma options align=mac68k
  192. #endif
  193. struct ADBSetInfoBlock {
  194.     ADBServiceRoutineUPP        siService;                        /*service routine pointer*/
  195.     Ptr                            siDataAreaAddr;                    /*data area address*/
  196. };
  197. #if defined(powerc) || defined(__powerc)
  198. #pragma options align=reset
  199. #endif
  200.  
  201. typedef struct ADBSetInfoBlock ADBSetInfoBlock;
  202.  
  203. typedef ADBSetInfoBlock *ADBSInfoPtr;
  204.  
  205. #ifdef __cplusplus
  206. extern "C" {
  207. #endif
  208.  
  209. extern pascal void ADBReInit(void)
  210.  ONEWORDINLINE(0xA07B);
  211. extern pascal OSErr ADBOp(Ptr data, ADBCompletionUPP compRout, Ptr buffer, short commandNum);
  212.  
  213. #if USES68KINLINES
  214. #pragma parameter __D0 CountADBs
  215. #endif
  216. extern pascal short CountADBs(void)
  217.  ONEWORDINLINE(0xA077);
  218.  
  219. #if USES68KINLINES
  220. #pragma parameter __D0 GetIndADB(__A0, __D0)
  221. #endif
  222. extern pascal ADBAddress GetIndADB(ADBDataBlock *info, short devTableIndex)
  223.  ONEWORDINLINE(0xA078);
  224.  
  225. #if USES68KINLINES
  226. #pragma parameter __D0 GetADBInfo(__A0, __D0)
  227. #endif
  228. extern pascal OSErr GetADBInfo(ADBDataBlock *info, ADBAddress adbAddr)
  229.  ONEWORDINLINE(0xA079);
  230.  
  231. #if USES68KINLINES
  232. #pragma parameter __D0 SetADBInfo(__A0, __D0)
  233. #endif
  234. extern pascal OSErr SetADBInfo(ADBSetInfoBlock *info, ADBAddress adbAddr)
  235.  ONEWORDINLINE(0xA07A);
  236. #ifdef __cplusplus
  237. }
  238. #endif
  239.  
  240. #endif
  241.  
  242.